/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package managedBeans;

import controladores.GestionEmpleadoCont;
import tools.Utilidad;
import java.io.Serializable;
import java.util.List;
import javax.faces.application.FacesMessage;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.ViewScoped;
import javax.faces.context.FacesContext;
import org.primefaces.component.datatable.DataTable;

/**
 *
 * @author ricardo
 */
@ManagedBean
@ViewScoped
public class Empleado implements Serializable {

    private modelos.pojos.Empleado empleado;
    private String rol;
    private DataTable tablaEmpleados;
    private Boolean noPermitirEdicion = true;

    /** Creates a new instance of Empleado */
    public Empleado() {
        empleado = new modelos.pojos.Empleado();
    }

    public modelos.pojos.Empleado getEmpleado() {
        return empleado;
    }

    public void setEmpleado(modelos.pojos.Empleado empleado) {
        this.empleado = empleado;
    }

    public Boolean getNoPermitirEdicion() {
        return noPermitirEdicion;
    }

    public void setNoPermitirEdicion(Boolean noPermitirEdicion) {
        this.noPermitirEdicion = noPermitirEdicion;
    }

    public String getRol() {
        return rol;
    }

    public void setRol(String rol) {
        this.rol = rol;
    }

    public DataTable getTablaEmpleados() {
        return tablaEmpleados;
    }

    public void setTablaEmpleados(DataTable tablaEmpleados) {
        this.tablaEmpleados = tablaEmpleados;
    }

    public void desbloquear() {
        this.noPermitirEdicion = false;
        FacesContext context = FacesContext.getCurrentInstance();
        context.addMessage(null, new FacesMessage("Campos Habilitados", "Ahora puede modificar la información"));
    }

    public List<modelos.pojos.Empleado> listarEmpleados() {
        return GestionEmpleadoCont.listarEmpleados("");
    }

    public void crearEmpleado() {
        String mensaje = GestionEmpleadoCont.crearEmpleado(empleado, rol);
        FacesContext context = FacesContext.getCurrentInstance();
        context.addMessage(null, new FacesMessage("Empleado creado:", mensaje));
    }

    public void consultarEmpleado() {
        modelos.pojos.Empleado seleccion = (modelos.pojos.Empleado) tablaEmpleados.getRowData();
        empleado = GestionEmpleadoCont.buscarEmpleado(seleccion.getCedula());
        if (empleado.getRol() != null) {
            rol = empleado.getRol().getNombre();
        }
    }

    public void actualizarEmpleado() {
        String mensaje = GestionEmpleadoCont.actualizarInformacion(empleado);
        FacesContext context = FacesContext.getCurrentInstance();
        context.addMessage(null, new FacesMessage("Empleado actualizada:", mensaje));
        noPermitirEdicion = true;
    }

    public void desactivarEmpleado() {
        modelos.pojos.Empleado seleccion = (modelos.pojos.Empleado) tablaEmpleados.getRowData();
        empleado = GestionEmpleadoCont.buscarEmpleado(seleccion.getCedula());
        empleado.setEstado(Utilidad.invertirEstado(empleado.getEstado()));
        GestionEmpleadoCont.actualizarInformacion(empleado);
        FacesContext context = FacesContext.getCurrentInstance();
        context.addMessage(null, new FacesMessage("Éxito en la operación"));
    }
}
